# 带有参数的装饰器: 装饰器只能带一个参数
# 使用带有参数的装饰器，其实是在装饰器外面又包裹了一个函数，使用该函数接收参数，返回装饰器

# 错误的语法
def decorator(fn, flag):
    def inner(num1, num2):
        if flag == '+':
            print('正在加法计算')
        elif flag == '-':
            print('正在减法计算')
        result = fn(num1, num2)
        return result

    return inner


@decorator('+')  #   add = decorator(add)  # TypeError: decorator() missing 1 required positional argument: 'flag'
def add(a, b):
    result = a + b
    return result


def sub(a, b):
    result = a - b
    return result


if __name__ == '__main__':
    result = add(1, 2)
    print('result-->', result)

    result = sub(1, 2)
    print('result-->', result)
